<?php
// +----------------------------------------------------------------------
// | Copyright (c) 2016 http://www.bloveambition.com All rights reserved.
// +----------------------------------------------------------------------
// | Author: derek <693472824@qq.com> <http://www.bloveambition.com>
// +----------------------------------------------------------------------

namespace Common\Api;

/**
 * 服务器信息公共接口类
 * @author derek <693472824@qq.com>
 */
class ServerApi {
    
    /**
     * 取数组中指定元素的顶级节点
     * @author derek <693472824@qq.com>
     */
    public static function getMacAddress($os_type){
        
        $return_array = array();
        
        switch ( strtolower($os_type) ){
            
            case "linux":
                $return_array = self::getLinuxMacAddr();
                break;
            
            case "solaris":
                break;
            
            case "unix":
                break;
            
            case "aix":
                break;
            
            default:
                $return_array = self::getWindowsMacAddr();
                break;
        }

        $temp_array = array();

        foreach ( $return_array as $value ){
            if (preg_match("/[0-9a-f][0-9a-f][:-]"."[0-9a-f][0-9a-f][:-]"."[0-9a-f][0-9a-f][:-]"."[0-9a-f][0-9a-f][:-]"."[0-9a-f][0-9a-f][:-]"."[0-9a-f][0-9a-f]/i",$value,  $temp_array ) ){
                
                $mac_addr = $temp_array[0];
                break;
            }

        }
        
        unset($temp_array);
        return $mac_addr;
    }
    
    /**
     * 获取Windows操作系统类型的MAC地址
     * @return multitype:
     */
    protected static function getWindowsMacAddr(){
        
        $return_array = array();
        @exec("ipconfig /all", $return_array);
        
        if ($return_array){
            
            return $return_array;
        }else{
            
            $ipconfig = $_SERVER["WINDIR"]."\system32\ipconfig.exe";

            if ( is_file($ipconfig) ){
                
                @exec($ipconfig." /all", $return_array);
            }else{
                
                @exec($_SERVER["WINDIR"]."\system\ipconfig.exe /all", $return_array);
            }
            
            return $return_array;
        }
    }
    
    /**
     * 获取Linux操作系统类型的MAC地址
     * @return multitype:
     */
    protected static function getLinuxMacAddr(){
        
        $return_array = array();
        @exec("ifconfig -a", $return_array);
        return $return_array;
    }
    
    /**
     * 取数组中指定元素的顶级节点
     * @param array $list       数组
     * @param string $pk        主键字段
     * @param string $pid       父节点字段
     * @param string $child     当前节点主键字段值
     * @param string $root      根节点ID
     * @return string $superID  父节点为 $root 的顶级元素主键字段值
     * @author derek <693472824@qq.com>
     */
    public static function loadConfig(){
    
        /* 读取数据库中的配置 */
        $config =   S('DB_CONFIG_DATA');
        
        if(!$config){
            $config = D('Blovex4/Config', 'Logic')->getList();
            S('DB_CONFIG_DATA',$config);
        }
        
        /* 读取数据字典配置 */
        $dictConfig = S('DICTIONARY_CONFIG_DATA');
        
        if(!$dictConfig){
            $dictConfig = D('Blovex4/Dictionary', 'Logic')->getList();
            S('DICTIONARY_CONFIG_DATA',$dictConfig);
        }
        
        C($config); //添加配置
        C($dictConfig); //添加配置
        
        //系统后台用户密码加密密钥
        defined('DATA_AUTH_KEY') or define('DATA_AUTH_KEY', C('DATA_AUTH_KEY'));        

        //前端 H5 用户密码加密密钥
        defined('USER_AUTH_KEY') or define('USER_AUTH_KEY', C('USER_AUTH_KEY'));

        //前端 APP 小哥密码加密密钥
        defined('USER_AUTH_KEY') or define('WORKER_AUTH_KEY', C('WORKER_AUTH_KEY'));
    }
}